package com.sg.dto.biz.bff.common;

import com.wicket.okrbff.common.annotations.TreeType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc BffResponsibleViewPointDto
 * @使用场景
 */
@Data
public class BffResponsibleViewPointDto implements Serializable {

    /**
     * 指标ID
     */
    @TreeType("id")
    @ApiModelProperty("指标ID")
    private String objectiveId;

    /**
     * 指标标识
     */
    @ApiModelProperty("指标标识")
    private String objectiveCode;

    /**
     * 是否末级指标 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否末级指标")
    private String isLastObjective;

    /**
     * 层级
     */
    @ApiModelProperty("层级")
    private Long levelNumber;

    /**
     * 指标名称
     */
    @ApiModelProperty("指标名称")
    private String objectiveName;

    /**
     * 指标简称
     */
    @ApiModelProperty("指标简称")
    private String objectiveShortName;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 本级是否向下分工 TRUE:是 FALSE:否
     */
    @ApiModelProperty("本级是否向下分工")
    private String createLowerIndicator;
    /**
     * 指标编号
     */
    @ApiModelProperty("指标编号")
    private String objectiveNumber;

    /**
     * 冗余目标ID
     */
    @ApiModelProperty("冗余目标ID")
    private String targetId;
    /**
     * 是否用于一级部门 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否用于一级部门")
    private String isUseFirstDept;
    /**
     * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
     */
    @ApiModelProperty("冗余指标业务类型")
    private String targetValueType;
    /**
     * 消息ID
     */
    @ApiModelProperty("消息ID")
    private String messageId;

    /**
     * 是否已处理 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已处理")
    private String isHandle;
    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 部门排序
     */
    @ApiModelProperty("部门排序")
    private Long dutyBodyOrderNum;

    /**
     * 个人排序
     */
    @ApiModelProperty("个人排序")
    private Long personalOrderNumber;

    /**
     * 权重排序
     */
    @ApiModelProperty("权重排序")
    private Long weightOrderNumber;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffResponsibleViewPointDto that = (BffResponsibleViewPointDto) o;
        return objectiveId == that.objectiveId && objectiveCode == that.objectiveCode && isLastObjective == that.isLastObjective && levelNumber == that.levelNumber && objectiveName == that.objectiveName && objectiveShortName == that.objectiveShortName && subjectLifeCycle == that.subjectLifeCycle && createLowerIndicator == that.createLowerIndicator && objectiveNumber == that.objectiveNumber && targetId == that.targetId && isUseFirstDept == that.isUseFirstDept && targetValueType == that.targetValueType && messageId == that.messageId && isHandle == that.isHandle && orderNumber == that.orderNumber && dutyBodyOrderNum == that.dutyBodyOrderNum && personalOrderNumber == that.personalOrderNumber && weightOrderNumber == that.weightOrderNumber && createTime == that.createTime && operateTime == that.operateTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), objectiveId, objectiveCode, isLastObjective, levelNumber, objectiveName, objectiveShortName, subjectLifeCycle, createLowerIndicator, objectiveNumber, targetId, isUseFirstDept, targetValueType, messageId, isHandle, orderNumber, dutyBodyOrderNum, personalOrderNumber, weightOrderNumber, createTime, operateTime);
    }


}
   